package com.mlan.userap.untils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {
    public static void main(String[] args) {
        String psw="123";
        encoder(psw);
    }

    /**
     * 给指定字符串按照md5算法进行加密
     * @param psw 需要加密的密码
     */
    public static String encoder(String psw) {
        try {
            psw=psw+"safeguard"; //密码加盐
            //1.指定加密算法
            MessageDigest digest=MessageDigest.getInstance("MD5");
            //2.将需要的字符串转换为byte类型的数组，然后进行随机哈希过程
            byte[] bs=digest.digest(psw.getBytes());
            System.out.println(bs.length);
            //3.循环遍历bs,然后让其生成32位的字符串(固定写法)，拼接字符串
            StringBuffer sb=new StringBuffer();
            for (byte b : bs) {
                int i=b&0xff; //固定写法
                //将int类型的i转换成16进制的字符
                String hexStr=Integer.toHexString(i);
                if(hexStr.length()<2){
                    hexStr="0"+hexStr;
                }
                sb.append(hexStr);
            }
            //System.out.println(sb);
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";
    }
}